從官方的文字說明還是看不太懂Monkey C的Symbol是什麼?今天繼續了解下去,
爬文時發現在Ruby中也有Symbol的概念,
可以參考這篇其他人的鐵人賽作品:https://ithelp.ithome.com.tw/articles/10228024
裡面關於Ruby裡面Symbol的介紹我覺得還算清楚
簡言之,Symbol就是一種名為符號的物件類型,
只要是前贅一個冒號: 就是屬於Symbol的物件類型,
就像只要有兩個雙引號"" 夾起來的就一定是屬於String的類型一樣,不用想得太複雜。
Symbol的特性是,只要一個Symbol出現過一次,在記憶體中就會分配給這個Symbol一個固定位置,
之後如果出現相同的Symbol,則就都會使用這同一個位置。
相對的,同一個String則是每出現一次,都會在記憶體中分配給它不同位置。
舉例:
var a = :symbol_1;
var b = :symbol_1;
System.println(a == b); // true 因為記憶體位置相同
var c = "String_2";
var d = "String_2";
System.println(c == d); // false 因為記憶體位置不同
並且基於同一個Symbol會被固定在同一個記憶體位置的原因,
Symbol本身在也有著建立後就不可修改的特性,直接使用可省去宣告常數的時間跟力氣。